package org.jboss.jsfunit.analysis;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import org.w3c.dom.Node;
/**
* A TestCase related to Jira-issue JSFUNIT_26.
*
* @author <a href="alejesse@gmail.com">Alexander Jesse</a>
* @version $Revision: 1.1 $
*/
public class ManagedPropertyTestCase_JSFUNIT_34_TestCase extends TestCase
{
public void testDuplicateKeys() throws Exception
{
String property = "<managed-property>" + " <property-name>map</property-name>" + " <map-entries>"
+ " <map-entry>" + " <key>duplicate</key>" + " <value>3</value>" + " </map-entry>"
+ " <map-entry>" + " <key>duplicate</key>" + " <value>4</value>" + " </map-entry>"
+ " </map-entries>" + "</managed-property>";
Node managedPropertyNode = createManagedPropertyNode(property, "map");
ManagedPropertyTestCase testCase = new ManagedPropertyTestCase("ManagedPropertyTestCase_JSFUNIT_34_TestCase",
(String) Utilities.STUBBED_RESOURCEPATH.toArray()[0], "bean", "bean", "map", managedPropertyNode);
try
{
testCase.testMapDuplicateKeys();
throw new RuntimeException("should have failed");
}
catch (AssertionFailedError e)
{
String msg = "Managed Bean 'bean' has a managed Map property with a duplicate key 'duplicate'";
assertEquals(msg, e.getMessage());
}
}
public void testNonDuplicateKeys() throws Exception
{
String property = "<managed-property>" + " <property-name>map</property-name>" + " <map-entries>"
+ " <map-entry>" + " <key>duplicate</key>" + " <value>3</value>" + " </map-entry>"
+ " <map-entry>" + " <key>NotADuplicate</key>" + " <value>4</value>" + " </map-entry>"
+ " </map-entries>" + "</managed-property>";
Node managedPropertyNode = createManagedPropertyNode(property, "map");
ManagedPropertyTestCase testCase = new ManagedPropertyTestCase("ManagedPropertyTestCase_JSFUNIT_34_TestCase",
(String) Utilities.STUBBED_RESOURCEPATH.toArray()[0], "bean", "bean", "map", managedPropertyNode);
try
{
testCase.testMapDuplicateKeys();
}
catch (AssertionFailedError e)
{
throw new RuntimeException("should not have failed");
}
}
private Node createManagedPropertyNode(String property, String propertyName)
{
String managedBean = Utilities.getManagedBean("bean", ManagedBeanWithMap.class, "none", property);
String facesConfig = Utilities.getFacesConfig(managedBean);
return Utilities.createManagedPropertyNode(facesConfig, propertyName);
}
}